#模块 核心_运算.py
#作者 幽灵代码
#QQ 29672366
#邮箱 29672366@qq.com
#日期 2016.3.23

__核心_运算_版本="核心_运算_1_0"
__核心_运算_描述="为机器智能赋予运算能力"

__核心_运算_分类映射表 = {}
__核心_运算_对象映射表 = {}
__核心_运算_属性映射表 = {}
__核心_运算_执行映射表 = {}


__核心_运算_执行映射表["+"] = "核心_运算_加"
__核心_运算_执行映射表["-"] = "核心_运算_减"
__核心_运算_执行映射表["*"] = "核心_运算_乘"
__核心_运算_执行映射表["/"] = "核心_运算_除"
__核心_运算_执行映射表["="] = "核心_运算_等于"
__核心_运算_执行映射表["加"] = "核心_运算_加"
__核心_运算_执行映射表["减"] = "核心_运算_减"
__核心_运算_执行映射表["乘"] = "核心_运算_乘"
__核心_运算_执行映射表["除"] = "核心_运算_除"
__核心_运算_执行映射表["加上"] = "核心_运算_加"
__核心_运算_执行映射表["减去"] = "核心_运算_减"
__核心_运算_执行映射表["乘以"] = "核心_运算_乘"
__核心_运算_执行映射表["除以"] = "核心_运算_除"
__核心_运算_执行映射表["等于"] = "核心_运算_等于"

__核心_运算_回调  = {}

#版本
def 核心_运算_版本():
    return __核心_运算_版本

#描述
def 核心_运算_描述():
    return __核心_运算_描述

#分类映射表
def 核心_运算_分类映射表():
    return __核心_运算_分类映射表

#对象映射表
def 核心_运算_对象映射表():
    return __核心_运算_对象映射表

#属性映射表
def 核心_运算_属性映射表():
    return __核心_运算_属性映射表

#执行映射表
def 核心_运算_执行映射表():
    return __核心_运算_执行映射表


#初始化
def 核心_运算_初始化(词汇解释,语句解释):
    __核心_运算_回调["词汇解释"] = 词汇解释
    __核心_运算_回调["语句解释"] = 语句解释

#执行
def 核心_运算_分发器(词汇,d,g):
    if 词汇 in __核心_运算_分类映射表:
        return eval(__核心_运算_分类映射表[词汇])(d,g)
    if 词汇 in __核心_运算_对象映射表:
        return eval(__核心_运算_对象映射表[词汇])(d,g)
    if 词汇 in __核心_运算_属性映射表:
        return eval(__核心_运算_属性映射表[词汇])(d,g)
    if 词汇 in __核心_运算_执行映射表:
        return eval(__核心_运算_执行映射表[词汇])(d,g)


#加
def 核心_运算_加(d,g):
    resdict = {}         
    if "浮点数" in d:
        if "运算表达式" in d:
                resdict["运算表达式"] = d["运算表达式"] + d["浮点数"] + "+"
        else:
            resdict["运算表达式"] = d["浮点数"] + "+"
    resdict["浮点数"] = "0"
    return resdict

#减
def 核心_运算_减(d,g):
    resdict = {}
    if "浮点数" in d:
        if "运算表达式" in d:
                resdict["运算表达式"] = d["运算表达式"] + d["浮点数"] + "-"
        else:
            resdict["运算表达式"] = d["浮点数"] + "-"
    resdict["浮点数"] = "0"
    return resdict

#乘
def 核心_运算_乘(d,g):
    resdict = {}
    if "浮点数" in d:
        if "运算表达式" in d:
                resdict["运算表达式"] = d["运算表达式"] + d["浮点数"] + "*"
        else:
            resdict["运算表达式"] = d["浮点数"] + "*"
    resdict["浮点数"] = "0"
    return resdict

#除
def 核心_运算_除(d,g):
    resdict = {}
    if "浮点数" in d:
        if "运算表达式" in d:
                resdict["运算表达式"] = d["运算表达式"] + d["浮点数"] + "/"
        else:
            resdict["运算表达式"] = d["浮点数"] + "/"
    resdict["浮点数"] = "0"
    return resdict

#等于
def 核心_运算_等于(d,g):
    resdict = {}
    if "运算表达式" in d:
        resdict["运算表达式"] = d["运算表达式"] + d["浮点数"]
        try:
            resdict["运算结果"] = "%s"%(eval(resdict["运算表达式"]))
        except:
            resdict["运算结果"] = "错误的表达式"
        resdict["告知属性"] = "运算结果"
        __核心_运算_回调["词汇解释"]("任务队列",resdict)
    if "浮点数" in resdict:
        del resdict["浮点数"]
    return resdict

